#ifndef OUTPUT_H
#define OUTPUT_H

#include <windows.h>
#include <string>
#include "game.h"

class Output {
public:
    // 基础输出功能
    static void draw(int x, int y, const std::string& content);
    static void clearScreen();
    static void clearLine(int y);
    static void clearPoint(int x, int y);
    
    // 游戏界面元素
    static void drawMapBorders();
    static void drawSnake(const SnakeNode* head);
    static void drawFood(const Food& food);
    static void drawInfo(int score, int speed, GameMode mode);
    
    // 特殊界面
    static void showWelcomeScreen();
    static void showLoadingScreen();
    static void showGameOverScreen(int score);
    static void showPauseScreen();
    
    // 工具函数
    static void setCursorPosition(int x, int y);
    
private:
    // 禁用实例化
    Output() = delete;
    ~Output() = delete;
    
    // 控制台句柄
    static HANDLE getConsoleHandle();
};

#endif // OUTPUT_H